<?php
//Ultima verificacion: 14-10-2014 ; 21-11-2014 ; 04-03-2015
class M_detalle_asistencia extends CI_Model {
	function _construct(){
		//Call the Model constructor
		parent::_construct();
	}
	
	//Este metodo se utiliza cuando queremos obtener las asistencias e inasistencias de un alumno
	function buscarActivos($restriccion=null){
		$consulta = $this->db->query("SELECT asistencia.*, detalleasistencia.idEstadoDetalleAsistencia, detalleasistencia.justificada, estadodetalleasistencia.nombre AS tipoInasistencia, estadodetalleasistencia.valor, 
											 (SELECT nombre FROM tipoasistencia WHERE tipoasistencia.idTipoAsistencia=asistencia.idTipoAsistencia AND tipoasistencia.estado<>-1 LIMIT 1) AS tipoAsistencia,
											 DATE_FORMAT(asistencia.fechaCreacion,'%d/%m/%Y %H:%i:%s') AS fechaCreacionFormateada, 
											 DATE_FORMAT(asistencia.fechaUltimaModificacion,'%d/%m/%Y %H:%i:%s') AS fechaUltimaModificacionFormateada,
											 DATE_FORMAT(asistencia.fecha,'%d/%m/%Y') AS fechaFormateada
									  FROM asistencia, detalleasistencia, estadodetalleasistencia, division, curso, alumnoxdivision, alumno, persona
									  WHERE asistencia.idAsistencia=detalleasistencia.idAsistencia AND
											detalleasistencia.idEstadoDetalleAsistencia=estadodetalleasistencia.idEstadoDetalleAsistencia AND
											asistencia.idDivision=division.idDivision AND
											division.idCurso=curso.idCurso AND
											detalleasistencia.idAxD=alumnoxdivision.idAxD AND
											alumnoxdivision.idAlumno=alumno.idAlumno AND
											alumno.idPersona=persona.idPersona AND
											asistencia.estado=1 AND
											detalleasistencia.estado=1 AND
											estadodetalleasistencia.estado=1 AND
											division.estado=1 AND
											curso.estado=1 AND
											alumnoxdivision.estado=1 AND
											alumno.estado=1 AND
											persona.estado=1 $restriccion
									  ORDER BY asistencia.fecha DESC");
		return($consulta);
	}
	
	//Este metodo se utiliza cuando queremos obtener la cantidad de asistencias por tipo de un alumno. 
	//Por ej, para saber la cantidad de faltas de un alumno.
	function buscarCantidad($restriccion=null){
		$consulta = $this->db->query("SELECT COUNT(detalleasistencia.idDetalleAsistencia) AS cantidad
									  FROM asistencia, detalleasistencia, estadodetalleasistencia, division, curso, alumnoxdivision, alumno, persona
									  WHERE asistencia.idAsistencia=detalleasistencia.idAsistencia AND
											detalleasistencia.idEstadoDetalleAsistencia=estadodetalleasistencia.idEstadoDetalleAsistencia AND
											asistencia.idDivision=division.idDivision AND
											division.idCurso=curso.idCurso AND
											detalleasistencia.idAxD=alumnoxdivision.idAxD AND
											alumnoxdivision.idAlumno=alumno.idAlumno AND
											alumno.idPersona=persona.idPersona AND
											asistencia.estado=1 AND
											detalleasistencia.estado=1 AND
											estadodetalleasistencia.estado=1 AND
											division.estado=1 AND
											curso.estado=1 AND
											alumnoxdivision.estado=1 AND
											alumno.estado=1 AND
											persona.estado=1 $restriccion
									  ORDER BY asistencia.fecha DESC");
		return($consulta);
	}
	
	//Este metodo se utiliza para crear un detalle en las asistencia
	function crear($idAsistencia=null, $idAxD=null, $idEstadoDetalleAsistencia=null, $justificada=null, $descripcion=null, $estado=null, $idCreador=null){
		$this->db->query("INSERT INTO `detalleasistencia` (`idDetalleAsistencia`,`idAsistencia`,`idAxD`,`idEstadoDetalleAsistencia`,`justificada`,`descripcion`,`fechaCreacion`,`estado`,`idCreador`) VALUES 
														  (NULL,".$this->db->escape($idAsistencia).",".$this->db->escape($idAxD).",".$this->db->escape($idEstadoDetalleAsistencia).",".$this->db->escape($justificada).",".$this->db->escape($descripcion).",now(),".$this->db->escape($estado).",".$this->db->escape($idCreador).")");
		return($this->db->affected_rows());
	}
	
	//Este metodo se utiliza cuando queremos devolver un detalle de asistencia segun su id
	function get($idDetalleAsistencia=null, $restriccion=null){
		$consulta = $this->db->query("SELECT detalleasistencia.*, estadodetalleasistencia.nombre AS nombreEstadoDetalleAsistencia, estadodetalleasistencia.valor AS valorEstadoDetalleAsistencia,
											 (SELECT nombre FROM tipoasistencia WHERE tipoasistencia.idTipoAsistencia=asistencia.idTipoAsistencia AND tipoasistencia.estado<>-1 LIMIT 1) AS tipoAsistencia,
											 DATE_FORMAT(asistencia.fecha,'%d/%m/%Y') AS fechaFormateada
									  FROM detalleasistencia, asistencia, estadodetalleasistencia
									  WHERE detalleasistencia.estado<>-1 AND 
											asistencia.estado<>-1 AND 
											estadodetalleasistencia.estado<>-1 AND 
											detalleasistencia.idAsistencia=asistencia.idAsistencia AND
											detalleasistencia.idEstadoDetalleAsistencia=estadodetalleasistencia.idEstadoDetalleAsistencia AND
											detalleasistencia.idDetalleAsistencia=".$this->db->escape($idDetalleAsistencia)." $restriccion
									  LIMIT 1");
		return($consulta);
	}
	
	//Este metodo se utiliza cuando queremos devolver un detalle de asistencia segun el alumno, la division, tipo de asistencia y fecha
	function get2($idAxD=null, $idDivision=null, $idTipoAsistencia=null, $fecha=null){
		$consulta = $this->db->query("SELECT detalleasistencia.*
									  FROM detalleasistencia, asistencia
									  WHERE detalleasistencia.estado<>-1 AND 
											asistencia.estado<>-1 AND 
											detalleasistencia.idAsistencia=asistencia.idAsistencia AND
											detalleasistencia.idAxD=".$this->db->escape($idAxD)." AND 
											asistencia.idDivision=".$this->db->escape($idDivision)." AND 
											asistencia.idTipoAsistencia=".$this->db->escape($idTipoAsistencia)." AND 
											asistencia.fecha=".$this->db->escape($fecha)."
									  LIMIT 1");
		return($consulta);
	}
	
	//Este metodo se utiliza para modificar un detalle de asistencia
	function modificar($idDetalleAsistencia=null, $idEstadoDetalleAsistencia=null, $justificada=null, $descripcion=null){
		$consulta = $this->db->query("UPDATE `detalleasistencia`
									 SET `idEstadoDetalleAsistencia` = ". $this->db->escape($idEstadoDetalleAsistencia) .",
										 `justificada` = ". $this->db->escape($justificada) .",
										 `descripcion` = ". $this->db->escape($descripcion) ."
							         WHERE `detalleasistencia`.`idDetalleAsistencia` = " . $this->db->escape($idDetalleAsistencia) . " LIMIT 1");
		return($this->db->affected_rows());
	}
}
?>